package com.lin.carbon.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.lin.carbon.validator.UniqueDictCode;
import jakarta.validation.constraints.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("sys_dict")
public class SysDict {
    /**
     * 字典主键 ID，数据库自增生成
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    /**
     * 字典编码，用于唯一标识一个字典
     */
    @NotBlank(message = "字典编码不能为空")
    @Size(min = 3, max = 3, message = "字典编码长度必须为三个字符")
    @UniqueDictCode
    private String dictCode;
    /**
     * 字典名称，用于描述字典的用途或含义
     */
    @NotBlank(message = "字典名称不能为空")
    private String dictName;
    /**
     * 字典描述，对字典进行详细说明
     */
    private String description;
    /**
     * 字典类型，用于区分不同类型的字典
     * 0 - string 类型
     * 1 - number 类型
     */
    @NotNull(message = "字典类型不能为空")
    @Min(value = 0, message = "字典类型必须为 0 或 1")
    @Max(value = 1, message = "字典类型必须为 0 或 1")
    private Integer type;
    /**
     * 删除标志，0 表示未删除，1 表示已删除
     */
    private Integer delFlag = 0;
    /**
     * 创建者 ID，记录创建该字典的用户 ID，默认值为 1
     */
    private Long creatorId = 1L;
    /**
     * 更新者 ID，记录最后更新该字典的用户 ID，默认值为 1
     */
    private Long updatedId = 1L;
    /**
     * 创建时间，记录字典创建的时间
     */
    private LocalDateTime createdTime;
    /**
     * 更新时间，记录字典最后更新的时间
     */
    private LocalDateTime updatedTime;
}
